Clocked References in X10

نویسنده

  • Daniel Atkins
چکیده

1. INTRODUCTION 2. BACKGROUND 2.1 The X10 Programming Language X10 is a programming language that is currently under development at IBM Research. It is a strongly typed, concurrent , imperative, and object-oriented programming language. Of those descriptors, concurrent is the most important , as X10 was designed with multi-core and clustered systems in mind [4, 3]. The goal of X10 is to allow programmers to easily produce code that can be distributed over multiple cores and/or machines, with good scalability [2]. This is becoming more and more relevant as manufacturers turn towards improving processors by increasing the number of cores, rather than raw speed. In addition, computers in general are becoming cheaper and available in larger numbers , and we begin to see that being able to take advantage of multi-core processors and clusters is a more and more attractive idea [7]. X10 is designed specifically to do this, and to make it easy, it contains several language constructs that allow programmers to readily, and easily, write concurrent code [3]. Places, which can be thought of as analogous to processes, provide a shared memory environment in which concurrent code can be executed. This memory is not shared between Places, which allows Places to be parallelised, and distributed across multiple machines. Within Places, concurrent execution is achieved by the use of Activities, which are analogous to Threads. (The specifics of these constructs will be dealt with in the next section). X10 is built primarily as an extension to Java, using Poly-glot to handle the translation from X10 source code to Java source code. X10 can also be compiled to C++ source code. The X10 Runtime is written primarily in X10 itself, giving it the ability to be compiled into one of several back-ends. Currently , there is a Java-based runtime environment (using the X10 Runtime as libraries for the JVM), a C++ based run-time environment, and a CUDA (Compute Unified Device Architecture—a parallel computing architecture developed by Nvidia, that can be executed on GPUs) runtime environment. This project deals solely with the Java back-end for X10, but could be easily applied to other back-ends, as the modifications were not implementation specific. X10 source code bears a similarity to Java source code; Figure 1 shows a short source file that performs a Monte Carlo simulation to estimate a value for Pi. Since X10 is an class-based object-oriented language, it has the concept …

برای دانلود متن کامل این مقاله و بیش از 32 میلیون مقاله دیگر ابتدا ثبت نام کنید

ثبت نام

اگر عضو سایت هستید لطفا وارد حساب کاربری خود شوید

منابع مشابه

The Design and Implementation of Clocked Variables in X10

This paper investigates the addition of Clocked Variables to the X10 Programming Language. Clocked Variables work well for primitives and objects with only primitive fields, but incur substantial performance penalties for more complex objects. We discuss ways to deal with these issues.

متن کامل

Checking Race Freedom of Clocked X10 Programs

One of many approaches to better take advantage of parallelism, which has now become mainstream, is the introduction of parallel programming languages. However, parallelism is by nature nondeterministic, and not all parallel bugs can be avoided by language design. This paper proposes a method for guaranteeing absence of data races in the polyhedral subset of clocked X10 programs. Clocks in X10 ...

متن کامل

Report on the Experimental Language X 10 DRAFT

break case catch class const continue default do else extends final finally for goto if implements import instanceof interface native new package private protected public return static super switch this throw throws try void while (Note that the primitive types are no longer considered keywords.) X10 introduces the following keywords: activitylocal async ateach atomic await clocked current fore...

متن کامل

Determinate Imperative Programming A clocked interpretation of imperative syntax ( Extended Abstract )

There are a large class of applications, notably those in highperformance computation (HPC), for which parallelism is necessary for performance, not expressiveness. Such applications are typically determinate and have no natural notion of deadlock. Unfortunately, today’s dominant HPC programming paradigms (MPI and OpenMP) are based on imperative concurrency and do not guarantee determinacy or d...

متن کامل

Optimizing Array Accesses in High Productivity Languages

One of the outcomes of DARPA’s HPCS program has been the creation of three new high productivity languages: Chapel, Fortress, and X10. While these languages have introduced improvements in language expressiveness and programmer productivity, several technical challenges still remain in delivering high performance with these languages. In the absence of optimization, the high-level language cons...

متن کامل

ذخیره در منابع من


  با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید

برای دانلود متن کامل این مقاله و بیش از 32 میلیون مقاله دیگر ابتدا ثبت نام کنید

ثبت نام

اگر عضو سایت هستید لطفا وارد حساب کاربری خود شوید

عنوان ژورنال:

دوره   شماره 

صفحات  -

تاریخ انتشار 2012